在昨天講了一個檔案裡最重要的幾個元件後
今天來講寫程式最基礎的變數宣告以及Function使用方法
Go的變數宣告方式有點特別
最簡單也最常見的宣告方式如下
這跟JavaScript宣告方式大致上一樣
var i = 1;
如果不透過型別他會自動在設定值的同時賦予型別上去(上述的例子就是自動變成int)
如果不給給值系統會給預設值
nil相當於物件的null 他本身也是一種型別
這跟第一種很類似 差異在於自定義型別
var x, y int = 3, 4
型別清單可以參考官網的文件
Go的特色還有可以一次宣告多個(你有20個變數 = 後面就可以有20個值)
這是Go最特別也是最潮的地方
寫習慣C#或是Java的我來看會覺得是鬼畫符
x := 1
b := float64(3.51)
這樣的寫法可以連var都省略了 而且又讓寫別的語言的人看不懂顯得自己很強
不過這也是大家最常宣告的方式 因為他可以直接接方法當作變數的承接值(後面會提到)
可以透過Go原生的套件reflect
這個套件來查詢變數所代表的型別
package main
import (
"fmt"
"reflect"
)
func main() {
var i = 1
fmt.Println(reflect.TypeOf(i))
}
// OutPut => int
如昨天所提到的在Function裡面有個特性
首字大小寫代表Public或是Private
package main
import (
"fmt"
)
func main() {
PublicTest()
privateTest()
}
func PublicTest() {
fmt.Println("PublicTest")
}
func privateTest() {
fmt.Println("PrivateTest")
}
// OutPut => PublicTest
// OutPut => PrivateTest
依照上面這個例子 雖然兩個方法都有辦法成功執行
但今天如果其他的檔案參考Main這個函示庫
就會無法使用privateTest這個方法
package main
import (
"fmt"
)
func main() {
answer := add(1, 2)
fmt.Println(answer)
}
func add(x, y int) int {
return x + y
}
// OutPut => 3
package main
import (
"fmt"
)
func main() {
answer1, answer2 := add(1, 2)
fmt.Println(answer1)
fmt.Println(answer2)
}
func add(x, y int) (int, int) {
return x + y, x * y
}
// OutPut => 3
// OutPut => 2
package main
import (
"fmt"
)
func main() {
answer := add(1, 2)
fmt.Println(answer)
}
func add(x, y int) (z int) {
z = x + y
return
}
// OutPut => 3
寫了這麼多種寫法,在Go的世界裡都可以執行
差別在於團隊習慣的用法而已 只要溝通好就都能使用